En el presente informe se ofrece un análisis exploratorio de los datos relativos a la producción eléctrica en España y su precio entre los años 2015 y 2018.
Estos datos comprenden básicamente información relativa a la cantidad de energía producida atendiendo a los distintos medios de generación, así como la producción total real y la esperada, y el precio real y el esperado. Toda esta información se desglosa por horas.
El objetivo de este análisis en conocer como se relaciona cada medio de generación con la producción total de energía y esta con el precio.
Se cargan las librerias necesarias para realizar el análisis exploratorio.
import numpy as np
import pandas as pd
from pandas_profiling import ProfileReport
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
Se carga el dataframe que va a ser analizado en este informe.
energy = pd.read_csv('../data/energy_dataset.csv', delimiter = ',')
En primer lugar se carga el dataset para tener una idea visual de como se organiza. Puesto que no se muestra al completo, posteriormente se muestra el nombre de todas las variables.
energy
energy.columns
Se cambia el nombre de las variables para hacerlos mas sencillos y manejables.
energy.columns = ['time', 'biomass', 'lignite', 'coal_dev_gas', 'gas', 'hard_coal', 'oil', 'oil_shale', 'peat',
'geothermal', 'hydro_pumped_storage_aggregated', 'hydro_pumped_storage_consumption',
'hydro_run_river', 'hydro_water_reservoir', 'marine', 'nuclear', 'other',
'other_renewable', 'solar', 'waste', 'wind_offshore', 'wind_onshore', 'forecast_solar_day_ahead',
'forecast_wind_offshore_day_ahead', 'forecast_wind_onshore_day_ahead',
'total_load_forecast', 'total_load_actual', 'price_day_ahead',
'price_actual']
Se eliminan las variables vacias o que unicamente contienen 0 o están vacias. Para ello se realiza primero un sumatorio por variables y se descartan aquellas que suman 0.
energy.sum()
energy = energy.drop(['coal_dev_gas', 'oil_shale', 'peat', 'geothermal',
'hydro_pumped_storage_aggregated', 'marine', 'wind_offshore'], axis=1)
Se eliminan variables relativas a la previsión de producción eléctrica de energías renovables, ya que no van a ser utilizadas.
energy = energy.drop(['forecast_solar_day_ahead', 'forecast_wind_offshore_day_ahead', 'forecast_wind_onshore_day_ahead'],
axis=1)
Puesto que la variable 'time' contiene información tanto de la fechacomo de la hora en una sola columna se divide en dos. Para ellos se crea una nueva columna con los datos relativos únicamente a la fecha y otra con las información acerca de la hora. A partir de esta última columna se crea una nueva que contiene solamente la hora y se ignora la huso horario, puesto que todos los datos corresponden a un mismo país.
Al terminar se eliminan tanto la columna 'time' original como la columna intermedia utilizada para la hora y se reordenan las variables para que las nuevas aprezcan al principio del dataset.
energy['time']
energy['date'] = energy.time.str.split(' ').str[0]
energy['hour1'] = energy.time.str.split(' ').str[1]
energy['hour'] = energy.hour1.str.split('+').str[0]
energy = energy.drop(['time', 'hour1'], axis=1)
energy = energy.reindex(columns = ['date', 'hour', 'biomass', 'lignite', 'gas', 'hard_coal', 'oil',
'hydro_pumped_storage_consumption', 'hydro_run_river','hydro_water_reservoir', 'nuclear', 'other',
'other_renewable', 'solar', 'waste', 'wind_onshore', 'total_load_forecast',
'total_load_actual', 'price_day_ahead', 'price_actual'])
energy.head()
Se observa la información relativa a las variables con las que se va a desarrollar el análisis.
energy.info()
Se observa en número de valores nulos, no son significativos.
energy.isnull().sum(axis=0)
Se presenta una tabla con los estadísticos básicos de las variables.
energy.describe()
Se realiza un breve resumen de un análisis de datos para tener una idea inicial de las variables.
resumen_eda = ProfileReport(energy,title="EDA energy")
resumen_eda